/*
 * OptimalSmallCover.h
 *
 *  Created on: 24 nov. 2011
 *  Authors: bnoleau, cybourdi, rlecrois
 */

#ifndef OPTIMALSMALLCOVER_H_
#define OPTIMALSMALLCOVER_H_

#include <set>

#include "Strategy.h"

class OptimalSmallCover: public Strategy{
public:
	OptimalSmallCover(int size);
	virtual ~OptimalSmallCover();
	virtual list<int> vertexCover(Graph* g);
	
private:
	int sizeCover;
	bool vertexCoverRecur(Graph* g, int param, list<int> &cover);
	bool testCover(Graph* g, list<int> cover);
	bool includeInList(list<int> listNodes, Node* n);
};

#endif /* OPTIMALSMALLCOVER_H_ */
